{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Multi-point stress approximation (MPSA)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Porepy supports mpsa discretization for linear elasticity problem:\n",
    "\\begin{equation}\n",
    "\\nabla\\cdot \\sigma = f.\n",
    "\\end{equation}\n",
    "Conservation of momentum gives us for each control volume $\\Omega_k$\n",
    "\\begin{equation}\n",
    "-\\int_{\\Omega_k} f dv = \\int_{\\partial\\Omega_k} T(n)dA,\n",
    "\\end{equation}\n",
    "where $T(n) = \\sigma \\cdot n$ are the surface traction vectors on the boundary of the control volume.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "To solve this system we first have to create the grid. Then we need to define boundary conditions. We set the bottom boundary as a Dirichlet boundary. The other boundaries are set to Neuman. We also need to create the stiffness matrix:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import porepy as pp\n",
    "\n",
    "# Create grid\n",
    "n = 5\n",
    "g = pp.CartGrid([n,n])\n",
    "g.compute_geometry()\n",
    "\n",
    "# Define boundary type\n",
    "dirich = np.ravel(np.argwhere(g.face_centers[1] < 1e-10))\n",
    "bound = pp.BoundaryCondition(g, dirich, ['dir']*dirich.size)\n",
    "\n",
    "# Create stiffness matrix\n",
    "lam = np.ones(g.num_cells)\n",
    "mu = np.ones(g.num_cells)\n",
    "constit = pp.FourthOrderTensor(g.dim, mu, lam)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We here use the constitutive law:\n",
    "\\begin{equation}\n",
    "\\sigma = 2  \\mu  \\epsilon +\\lambda  \\text{trace}(\\epsilon) I, \\quad \\epsilon = \\frac{1}{2}(\\nabla u + (\\nabla u)^\\top)\n",
    "\\end{equation}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We discretize the stresses by using the multi-point stress approximation (for details, please see: E. Keilegavlen and J. M. Nordbotten. “Finite volume methods for elasticity with weak symmetry”. In: International Journal for Numerical Methods in Engineering (2017))."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We now define the boundary conditions. We clamp the bottom boundary, and push down by a constant force on the top boundary. Note that the traction on the Neumann boundary is the total traction, not the traction density. To get the traction density we have to scale the traction by the face areas."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "top_faces = np.ravel(np.argwhere(g.face_centers[1] > n - 1e-10))\n",
    "bot_faces = np.ravel(np.argwhere(g.face_centers[1] < 1e-10))\n",
    "\n",
    "u_b = np.zeros((g.dim, g.num_faces))\n",
    "u_b[1, top_faces] = -1 * g.face_areas[top_faces]\n",
    "u_b[:, bot_faces] = 0\n",
    "\n",
    "u_b = u_b.ravel('F')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We discretize this system using the Mpsa class. We assume zero body forces $f=0$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "mpsa_class = pp.Mpsa(\"mechanics\")\n",
    "f = np.zeros(g.dim * g.num_cells)\n",
    "\n",
    "param = pp.Parameters(g)\n",
    "param.set_tensor(\"mechanics\", constit)\n",
    "param.set_bc(\"mechanics\", bound)\n",
    "param.set_bc_val(\"mechanics\", u_b)\n",
    "param.set_source(\"mechanics\", f)\n",
    "data = {'param': param}\n",
    "\n",
    "A, b = mpsa_class.matrix_rhs(g, data)\n",
    "\n",
    "u_class = np.linalg.solve(A.A, b)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And we can plott the y_displacement"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nAXHbXHfddcrJyVFFRYVee+013XfffS2qHH/961910003ad++fTrnnHN08cUXKxKJaMeOHZozZ45+\n9KMftejvj3/8o1544QVVVFQoEAjoX//1X9v8vpdcconuu+8+XXPNNaqpqdGaNWskSTNmzFAgENDn\nn3+uVatW6Z133tHvfve7mH387Gc/U1lZmbZu3ap3331X8+bNi+6LRCL63ve+p9GjR2vHjh1asmSJ\nnnzySf3tb3+TJP3nf/6niouLtXr1aq1Zs0YrVqzQQw89FH3/V199pbq6Ou3YsUMPPvigfvCDH2je\nvHlauXKl/v73v+vBBx+Mzpl5+umntWDBAr3//vuqqKhQz549NWvWLEmK/lzs379fNTU1OvfccyVJ\nH3/8sfLy8rR7927NmTNH1157bYv4X375ZU2ePFl9+vRp81gCwMnWPPHby4dvWWuP5wHgFDZv3jzb\nr1+/43rPr371K3vFFVdEtyXZJUuWtGgjyZaWlka3v/3tb9u77747ur1q1SrbvXt3m56ebocMGXJM\nfYVCIRsIBOzGjRuj++699157/vnnx4xz5syZ9pprron7PbZt22YTEhJsVVVV9LV77rnHzpgxw1pr\n7U9/+lM7efLk6L433njDpqam2lAoZK21tqqqykqy+/bts9Za+81vfrPFd1y/fr1NSkqyoVDIvvfe\ne7Z///4tPv+MM86w7777bvSzbrjhhui+r776yiYnJ9va2troa/Pnz7eTJk2K+V0GDhxoi4qKotu/\n/e1vo59XXFxsBwwY0KL9ww8/bG+55RZrrbV5eXn2zTffjO4rKiqyZ5xxhrXW2vfee8927dq11Xcu\nLi6Ots/Pz7evv/66tdbaoUOH2sWLF0f3VVRU2EAgYIPBoP3iiy+sJBsMBqP7f//737eKrbi42Obk\n5NhwOGyttbagoMC++uqrMb83gFPK8V6jevIYKtlijx+SSrw+DrEevk6AALSv3r17a+/evQqFQgoE\nYp8eNm/erLvuukslJSWqra1VKBRSQUFBizZHqxY0f87OnTuj22PGjNH+/fu1ePFizZw585j62rNn\nj0KhUIv9Z5xxxlE/c/PmzXH3V1RUqFevXkpPT2/RX0lJSXS7X79+0ecpKSnKzMxUYmJidFtqnJje\no0ePVrGfccYZCgaD2rt3b9wY4vnyyy8VDAaVlZUVfS0SicQ9NhUVFS32Hf78yy+/VEVFRTRGSQqH\n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\nMgAAAAA46v8BMrrq7uajrmEAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f7d899d1c18>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pp.plot_grid(g, cell_value=u_class[1::2], figsize=(15, 12))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To better understand what goes on under the hood of the mpsa class, we manually create the lhs and rhs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "constit = pp.FourthOrderTensor(g.dim, mu, lam)\n",
    "stress, bound_stress = pp.numerics.fv.mpsa.mpsa(g, constit, bound)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "MPSA returns the two sparse matrices \"stress\" and \"bound_stress\". They give define the discretization of the cell-face traction:\n",
    "\\begin{equation}\n",
    "T = \\text{stress} \\cdot u + \\text{bound_stress} \\cdot u_b\n",
    "\\end{equation}\n",
    "Here $u$ is a vector of cell center displacement and has length g.dim $*$ g.num_cells. The vector $u_b$ is the boundary condition values. It is the displacement for Dirichlet boundaries and traction for Neumann boundaries and has length g.dim $*$ g.num_faces.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We are now ready to set up the linear system of equations and solve it. We define the body forces $f = 0$. Each row in the discretized system is now\n",
    "\\begin{equation}\n",
    "-\\int_{\\Omega_k} f dv = \\int_{\\partial\\Omega_k} T(n)dA = [div \\cdot \\text{stress} \\cdot u + div\\cdot\\text{bound_stress}\\cdot u_b]_k,\n",
    "\\end{equation}\n",
    "We move the known boundary variable $u_b$ over to the right hand side and solve the system:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "f = np.zeros(g.dim * g.num_cells)\n",
    "\n",
    "div = pp.fvutils.vector_divergence(g)\n",
    "A = div * stress\n",
    "b = -f - div * bound_stress * u_b\n",
    "\n",
    "u = np.linalg.solve(A.A, b)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This gives the same displacement as for the Mpsa class:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "assert np.allclose(u, u_class)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can now plot the y-displacement"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nAXHbXHfddcrJyVFFRYVee+013XfffS2qHH/961910003ad++fTrnnHN08cUXKxKJaMeOHZozZ45+\n9KMftejvj3/8o1544QVVVFQoEAjoX//1X9v8vpdcconuu+8+XXPNNaqpqdGaNWskSTNmzFAgENDn\nn3+uVatW6Z133tHvfve7mH387Gc/U1lZmbZu3ap3331X8+bNi+6LRCL63ve+p9GjR2vHjh1asmSJ\nnnzySf3tb3+TJP3nf/6niouLtXr1aq1Zs0YrVqzQQw89FH3/V199pbq6Ou3YsUMPPvigfvCDH2je\nvHlauXKl/v73v+vBBx+Mzpl5+umntWDBAr3//vuqqKhQz549NWvWLEmK/lzs379fNTU1OvfccyVJ\nH3/8sfLy8rR7927NmTNH1157bYv4X375ZU2ePFl9+vRp81gCwMnWPPHby4dvWWuP5wHgFDZv3jzb\nr1+/43rPr371K3vFFVdEtyXZJUuWtGgjyZaWlka3v/3tb9u77747ur1q1SrbvXt3m56ebocMGXJM\nfYVCIRsIBOzGjRuj++699157/vnnx4xz5syZ9pprron7PbZt22YTEhJsVVVV9LV77rnHzpgxw1pr\n7U9/+lM7efLk6L433njDpqam2lAoZK21tqqqykqy+/bts9Za+81vfrPFd1y/fr1NSkqyoVDIvvfe\ne7Z///4tPv+MM86w7777bvSzbrjhhui+r776yiYnJ9va2troa/Pnz7eTJk2K+V0GDhxoi4qKotu/\n/e1vo59XXFxsBwwY0KL9ww8/bG+55RZrrbV5eXn2zTffjO4rKiqyZ5xxhrXW2vfee8927dq11Xcu\nLi6Ots/Pz7evv/66tdbaoUOH2sWLF0f3VVRU2EAgYIPBoP3iiy+sJBsMBqP7f//737eKrbi42Obk\n5NhwOGyttbagoMC++uqrMb83gFPK8V6jevIYKtlijx+SSrw+DrEevk6AALSv3r17a+/evQqFQgoE\nYp8eNm/erLvuukslJSWqra1VKBRSQUFBizZHqxY0f87OnTuj22PGjNH+/fu1ePFizZw585j62rNn\nj0KhUIv9Z5xxxlE/c/PmzXH3V1RUqFevXkpPT2/RX0lJSXS7X79+0ecpKSnKzMxUYmJidFtqnJje\no0ePVrGfccYZCgaD2rt3b9wY4vnyyy8VDAaVlZUVfS0SicQ9NhUVFS32Hf78yy+/VEVFRTRGSQqH\n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\nMgAAAAA46v8BMrrq7uajrmEAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f7d270cb668>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pp.plot_grid(g, cell_value=u[1::2], figsize=(15, 12))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also retrieve the traction on the faces. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1oAAAKhCAYAAABJgN/wAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8VOWh//HvTHZCAoEQdlkEBaRsiQpKLYqoXdSCVFFU\nLG5Vrlev1p/rdXtZl1ptba222qpteSlae91AKQUUNRgxCCiLCLKHXYgkM5nMJHN+f3iTK9VkDnAe\nnpyTz/v16qskmUy+eTg+zPc8zzkTchxHAAAAAADvhG0HAAAAAICgoWgBAAAAgMcoWgAAAADgMYoW\nAAAAAHiMogUAAAAAHqNoAQAAAIDHKFoAAAAA4DGKFgAAAAB4jKIFAAAAAB5LP8DHO0ZSAAAAAIA/\nhNw8iBUtAAAAAPAYRQsAAAAAPEbRAgAAAACPUbQAAAAAwGMULQAAAADwGEULAAAAADxG0QIAAAAA\nj1G0AAAAAMBjFC0AAAAA8BhFCwAAAAA8RtECAAAAAI9RtAAAAADAYxQtAAAAAPAYRQsAAAAAPEbR\nAgAAAACPUbQAAAAAwGMULQAAAADwGEULAAAAADxG0QIAAAAAj1G0AAAAAMBjFC0AAAAA8BhFCwAA\nAAA8RtECAAAAAI9RtAAAAADAYxQtAAAAAPAYRQsAAAAAPEbRAgAAAACPUbQAAAAAwGMULQAAAADw\nGEULAAAAADxG0QIAAAAAj1G0AAAAAMBjFC0AAAAA8BhFCwAAAAA8RtECAAAAAI9RtAAAAADAYxQt\nAGil2rZtq3Xr1n3r15599lmNHj36MCcCACA4KFoAYNBzzz2nkpIStW3bVl27dtX3v/99vffeewf9\nfKFQSGvXrt3vc1VVVbr++uvVu3dv5ebm6ogjjtDEiRO1aNGiZp+rurpaffv2Pagc8Xhcd911l/r3\n76/c3Fz17t1bU6dO1YYNGw7q+Uy56667dOGFF9qOYdSGDRsUCoVUV1dnOwoA4GsoWgBgyCOPPKLr\nrrtOt956q3bs2KFNmzbp6quv1quvvnrAz9XUi+ja2lqdcsop+uSTTzRz5kzt27dPq1at0qRJk/TG\nG28c0HMdiIkTJ+q1117Tc889py+//FLLli1TcXGx5s2bd8jPDe9RwgDAAsdxDuR/AAAXKisrndzc\nXOfFF19s8jEffPCBM3LkSKddu3ZOly5dnGnTpjm1tbWNX5fkPPbYY06/fv2c3r17O9/97ncdSU6b\nNm2c3NxcZ8aMGc5TTz3ldOnSxamurm42z78/V8Pn1qxZ4ziO4+zevds588wznby8POfYY491br/9\ndufEE0/81uf617/+5WRnZzubNm1q8udVVFQ4Z555plNQUOAceeSRzpNPPtn4tTvvvNOZOHGiM3ny\nZKdt27bO4MGDndWrVzv33Xef06lTJ6dHjx7OP//5z8bHf+9733Nuvvlm59hjj3Xy8/Ods846y/ni\niy8cx3Gct956y+nevft+P7tXr17Ov/71L+fNN990MjIynPT0dCc3N9cZMmSI4zhf/d1MnTrV6dKl\ni9OtWzfntttuc+rq6r7194hGo87FF1/stG/f3hkwYIDz4IMP7vfzKioqnAkTJjiFhYVO7969nUcf\nfbTxa7FYzLn22mudrl27Ol27dnWuvfZaJxaL7Zf7wQcfdDp16uR06dLFefnll51Zs2Y5/fv3dwoK\nCpxf/OIXjc9VX1/v3H///U7fvn2dDh06OD/5yU8ax6Bnz56OJCc3N9fJzc11Fi5c6DzzzDPOCSec\n4Fx33XVOQUGBc/PNNzsFBQXOxx9/3PicO3bscLKzs52dO3c2+fcIAPhWrroTK1oAYMD777+vWCym\n8ePHN/mYtLQ0/frXv9bu3bv1/vvva968eXr88cf3e8wrr7yiDz74QCtXrtQ777wjSVq2bJmqq6t1\n3nnnae7cuTr99NOVm5ubMtPXn+vfTZs2TdnZ2dq2bZuefvppPf30000+z9y5c3XcccepZ8+eTT7m\n/PPPV48ePbR161a99NJLuvXWW/db7Xr99dd10UUXae/evRo+fLhOP/10JZNJVVRU6I477tCVV165\n3/P99a9/1dNPP62tW7cqPT1d//mf/5ny9z3jjDN066236rzzzlN1dbWWLVsmSZoyZYrS09O1du1a\nLVmyRHPmzNGf/vSnb32Ou+++Wxs2bNC6dev0r3/9S9OnT2/8WjKZ1JlnnqmhQ4eqoqJC8+bN029+\n8xv985//lCT94he/UFlZmZYuXaply5Zp0aJFuvfeexu/f/v27YrFYqqoqNA999yjyy+/XNOnT9fi\nxYv17rvv6p577mm8hu63v/2tXnnlFS1YsEBbt25VQUGBpk2bJkmNx0VlZaWqq6s1atQoSdIHH3yg\nvn37aufOnbrjjjs0adKk/fI///zzOvXUU9WpU6eUYwkAOAhuG5nDihYAuDZ9+nSnc+fOB/Q9v/71\nr50f//jHjR9LcubNm7ffY/S1VSjHcZyxY8c6N910U+PHS5Yscdq1a+fk5eU5Rx11lKvnqqurc9LT\n051Vq1Y1fu2WW25pckXrsssuc84777wmf49NmzY54XDY2bdvX+Pnbr75ZmfKlCmO43y1onXqqac2\nfu21115zcnNzG1eV9u3b50hy9u7d6zjOVytaX/8dV6xY4WRkZDh1dXXNrmg1/KzJkyc3fm379u1O\nZmamE41GGz/33HPPOWPGjPnW36VPnz7O7NmzGz9+6qmnGn9eWVmZ07Nnz/0ef9999zmXXHKJ4ziO\n07dvX2fWrFmNX5s9e7bTq1cvx3G+WtHKzs7+xu9cVlbW+PgRI0Y4L7/8suM4jjNgwABn7ty5jV/b\nunWrk56e7iQSCWf9+vWOJCeRSDR+/ZlnnvlGtrKyMqdHjx5OfX294ziOU1xc7Lzwwgvf+nsDAJrl\nqjulW+x4ABBYHTt21O7du1VXV6f09G+faj/77DNdf/31Ki8vVzQaVV1dnYqLi/d7THOrRg0/Z9u2\nbY0fDxs2TJWVlZo7d64uu+wyV8+1a9cu1dXV7ff1Xr16NfszP/vssya/vnXrVnXo0EF5eXn7PV95\neXnjx507d278c05OjgoLC5WWltb4sfTVzTrat2//jey9evVSIpHQ7t27m8zQlI0bNyqRSKhr166N\nn0smk02OzdatW/f72tf/vHHjRm3durUxoyTV19fru9/9buP3fn0ce/Xqpa1btzZ+3LFjx2/8zv8+\nLtXV1Y0/a/z48QqH/28jSlpamnbs2NHk7/rvv9Pxxx+v3NxcLViwQF27dtXatWt11llnNfn9AIBD\nw9ZBADBg1KhRys7O1iuvvNLkY6666ioNGDBAa9as0b59+3TffffJcZz9HhMKhZr9OWPHjtWcOXMU\niURSZmrquTp16qT09HRt3ry58XObNm1q8nlOPfVULVq0SFu2bPnWr3fr1k179uxRVVXVfs/XvXv3\nlBmb8u/ZMjIyVFhYqNzcXEWj0cav1dfXa9euXY0f//vv3LNnT2VlZWn37t2qrKxUZWWl9u3bpxUr\nVnzrz+3atet+v+fXc/Ts2VN9+vRpfJ7KykpVVVU13oSkW7du2rhx4365u3XrdlC/f8+ePfXmm2/u\n97NisZi6d+/e5N/rt31+ypQpmj59uv72t79p4sSJys7OPqg8AIDUKFoAYEC7du10zz33aNq0aXrl\nlVcUjUaVSCT05ptv6v/9v/8n6avbsufn56tt27b69NNP9cQTT6R83s6dO+/33lcXX3yxunbtqvHj\nx2v58uWqr69XLBbbb/UolbS0NE2YMEF33XWXotGoVq5cqb/85S9NPv7UU0/VuHHjNH78eC1evFh1\ndXWqqqrSH/7wBz399NPq2bOnTjjhBN1yyy2KxWL6+OOP9ec//1mTJ092nenfTZ8+XStXrlQ0GtUd\nd9yhiRMnKi0tTUcddZRisZhmzZqlRCKhe++9V7W1tY3f17lzZ23YsEHJZFLSV8XptNNO0w033KB9\n+/YpmUzq888/14IFC77155577rm6//77tXfvXlVUVOixxx5r/Npxxx2n/Px8Pfjgg6qpqVF9fb2W\nL1+uDz/8UNJX16nde++92rVrl3bv3q177rnnoG81/7Of/Uy33XZbY3HbtWtX490rO3XqpHA43OR7\non3dRRddpJdfflnTp0/XxRdffFBZAADuULQAwJDrr79ejzzyiO6991516tRJPXv21GOPPaYf//jH\nkqRf/epXeu6555SXl6fLL79c5513XsrnvOuuuzRlyhS1b99eL774orKzs/XWW29p0KBB+uEPf6j8\n/HwdffTR+vDDD/Xiiy+6zvrYY4+purpaXbp00SWXXKKf/vSnzT7+pZde0g9+8AOdd955ateunQYP\nHqzy8nKdeuqpkr660cKGDRvUrVs3jR8/XnfffbfGjRvnOs+/u+iii3TJJZeoS5cuisVi+u1vfyvp\nq0L7+OOP67LLLlP37t2Vm5urHj16NH7fT37yE0lfbdMbMWKEpK9urBGPxzVo0CAVFBRo4sSJ+22/\n/Lo77rhDPXr0UJ8+fXTqqadq4sSJysrKkvRVQX399de1dOlS9enTR4WFhbrsssv05ZdfSpJuv/12\nlZSUaMiQIfrOd76jESNG6Pbbbz+o3//aa6/VWWedpdNOO015eXkaOXKkPvjgA0lSmzZtdNttt+nE\nE09U+/btVVZW1uTz9OjRQyNGjFAoFGrc4ggAMCP079tUUjigBwMAcKjGjBmjCy+88BvXnNnwxBNP\naMaMGU2ugPnB1KlT1a1bt/3ugAgAOCDN7+v/X6xoAQDQhG3btqm0tFTJZFKrV6/Www8/3Owt+1u6\nDRs26H/+53906aWX2o4CAIFH0QIAoAnxeFxXXnml8vLydMopp+jss8/W1VdfbTvWQfnv//5vDR48\n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\ncV2D42au65gxY/orDhCyKFpAELS1tenYsWOSpISEhOsWrUGDBnHQOUi4rsHBdQ0Oj8fDtQ0Crmtw\nJCYmKiEh4apf+/M//3M1NjZKksrKyjRjxow+//+kpCS99957PV+/9957euqpp+T3+7V27dqec5aA\nk1G0AJvV1tbq9OnTmjJligoLC5Wamiqfz9fn499++21HnHH4wx/+oJycHEVEOONo5969ex1xXdva\n2tTa2qq0tDTTUW6KU66rJJWXlzvmU3UnXde6ujrFx8dr0KBBpqPckJOuq2VZKiws1JQpU0xHuaG+\nruvvf//7nv++//77deDAgZv68/x+v9atW6cPPvhAGRkZys/P14oVK5STk2NbZsAEZ7xjAhzA7/er\no6NDZ8+e1cyZM5WYmGg6km18Pp8WL16slpYW01FcZ9OmTfqnf/on0zFcafr06fL7/aZjuM4///M/\n67XXXjMdw3Xa2tq0aNEieb1e01H63b59+5SVlaXMzEzFxMRo9erVevvtt03HAu4YRQuwQVtbm/bt\n26fIyEjl5eUpOjradCRbHTx4UKNGjdKQIUNMR3GdyspKJScnm47hSt3nSGCvpKQkVVVVmY7hOoMG\nDVJWVpb2799vOkq/q66u1qhRo3q+zsjIUHV1tcFEgD0oWsAdqq2t1dGjR5WTk6OYmBhXTuDasWOH\n5s+fbzqGK9XU1GjEiBGmYwA3bcSIEaqpqTEdw5Xmz5+vHTt2mI7R7yzLuubX3PizFOGHogXcpu79\n9HV1dcrPz3fVVsHP2rFjhxYsWGA6hivV1NQoPT3ddAzgpo0YMUK1tbWmY7hSuBatjIwMVVZW9nxd\nVVXFB1BwBYZhALehra1N7e3tGjVqlEaNGtXnJ2+WZenSpUt9Th30+/0KBALq6uoKZtw70t7eroMH\nD2rWrFkhnfNKlmWF/HXtVlNTo5SUFEdklS5fW6dklaSurq4b3l4hFDjpuqakpKi6utoReQOBgLxe\nr2NWR/Lz83X06FE1NjaG9LCRQCCgzs5ORUZG9vn7dXV1amtrU3x8/A3/vPz8fJWWlurMmTMaOXKk\nNm3apDfeeMPu2EC/o2gBt6impkZlZWWKi4vT6NGj+3xcIBBQRESE9u3b1+fvd3Z2Kjo6+qYnM5lw\n4MABjR07VidOnDAd5aZ5vV5ZlhXS17VbZWWl6urq1NHRYTrKDVmWpY6ODkdc124HDhzo881gKOno\n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\nOxTABn6/X1FRUbrrrruuu4plWdYNz2N5vV75fD4NGDBAx48fD1bkflNeXi6/36/z58+H5A+8zs5O\nRUREOPpaNzQ0KD4+3hGj89vb2zVgwACVlZWZjnLLnHRGS/rjOa3GxkbTUW4oMTFR77//vlJTU01H\nuW1er1e7d+8O2fsaRkdH67e//a0yMzNNR7FFYWGhIiMjFRsbq3379mn9+vU9Z54HDhwo6fLP5okT\nJyopKUn19fVqb29XZGSkxo8fr5iYGM5twVEoWghbMTExio6Ovm7JCgQC8vv9fZ7H6l5ZSUxMVFZW\nliIi3LFIfOjQIS1evFgzZ840HeUa9fX1qqur05QpUxy9NfPgwYMaM2ZMyJ9x8fv9OnToUMjn7IvT\nzmhJ0oEDB5SXlxfyq7VjxoxRcnKyY18b0uXv84WFhUpOTg7JwrhkyRI1NDToy1/+sukotggEAjp1\n6pTa29v18ssv65133tHIkSM1f/58vfrqq5o8ebIkqaSkRI888oimTp2q7du36ze/+Y3eeust/eY3\nvzH8DIBb4453hUAQ+Hy+624p6ezs1OHDhzVs2DBNnDjRNSVLunw+a/78+aZjXKOjo0NlZWWaPHmy\no0uWxPks9M1J57ScNuL9szwejyZPnqzy8nK1t7ebjnONefPm6cMPPzQdwzYRERGaMGGCqqurlZSU\npLS0NMXExGjlypV65513eh43ceLEnnPOTzzxhJYtW6aCggLHb6NE+HHPO0PAJt3bBa/3Db2pqUnH\njh3ThAkTQnpq1e3w+/36+OOPQ+58ViAQUFFRkSZPnhzyE9luRk1NjSNeO5zP6n9OOaeVnp7u6IEY\n3aKiojR58uSe23uEks997nPavXu3Y8/C9cXr9SorK0uffvqpGhsbex2uUl9fr/Xr1ysrK0uLFy9W\nfHy8zp8/bygxcHtCe18C0I+uHN0eGRnZ5/1hus9jxcXFqaSkpJ9TBt+JEyc0ZMgQVVRUqKKiwnSc\nHpcuXZLH41FxcbHpKLY4ePCgYmNjQ/4+RN3ns8rLy01HuS1OO6MlXf5e1NHREZLnI68UCAR06NCh\nkH8N3yyv16tdu3aF3Hmt5ORkvf7668rNzTUdxTYnT55Uc3OzLMvSsWPHVFpaqnPnzmn9+vU957bq\n6+u1fPlyRUVFKRAIqLKyUpMmTVJ7e7s8Ho+ioqI0duxYzm0hpFG0AP1xdHsgEJDH4+n1TFYgEFBJ\n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\nAUbL9IxSDHxbAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f7d20a1a048>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "T = stress * u + bound_stress * u_b\n",
    "\n",
    "neumann_faces = np.argwhere(bound.is_neu)\n",
    "neumann_dof = np.ravel((2*neumann_faces, 2*neumann_faces+1),'F')\n",
    "\n",
    "assert np.allclose(np.abs(u_b[neumann_dof]), np.abs(T[neumann_dof]))\n",
    "\n",
    "T = np.vstack((T.reshape((g.dim, -1),order='F'), np.zeros(g.num_faces)))\n",
    "pp.plot_grid(g, vector_value=50*T, figsize=(15, 12), alpha=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that the traction on face i: T[2*i:2*i+g.dim] is the traction on the face as defined by the normal vectors g.face_normals. This means that for the bottom boundary, the traction T[bot] is the force from to box on the outside (since the normal vectors here are [0,1]), while on the top boundary, the traction T[top] is the force applied to to top faces from the outside (since the normals here point out of the domain)."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
